/**
 *
 *项目名：
 *包名：com.zhibaicc.android
 *文件名：AppManager.java
 *版本信息：1.0.0
 *创建日期：2014年5月30日-下午3:14:27
 *创建人： 单
 *上海智百文化传播有限公司
 */
package com.sensePlusVR.utils;

import java.util.Stack;

import android.app.Activity;
import android.content.Context;

import com.sensePlusVR.main.R;
import com.umeng.analytics.MobclickAgent;

/**
 * 
 * @author: Loren
 * @create: 2016-7-4下午7:39:43
 * @desc: Activity 管理类
 * 
 */
public class AppManager {
	//private static final String TAG = AppManager.class.getSimpleName();
	/**
	 * 保存Activity的堆栈
	 */
	public static Stack<Activity> stack;
	/**
	 * 该类的实例
	 */
	private static AppManager appManager;

	/**
	 * 获取单一实例
	 * 
	 * @return
	 */
	public static AppManager getInstance() {
		if (appManager == null)
			appManager = new AppManager();
		return appManager;
	}

	/**
	 * 添加Activity到堆栈
	 * 
	 * @param activity
	 */
	public void addActivity(Activity activity) {
		if (stack == null)
			stack = new Stack<Activity>();
		stack.add(activity);

	}

	/**
	 * 获取当前的Activity （堆栈中最后一个压入的）
	 * 
	 * @return
	 */
	public Activity currentActivity() {
		if (stack != null && stack.size() > Constant.NUMBER_0)
			return stack.lastElement();
		return null;
	}

	/**
	 * 结束当前Activity （堆栈中最后一个压入的）
	 */
	public void finishActivity() {
		if (stack != null && stack.size() > 0) {
			Activity activity = stack.lastElement();
			if (activity != null) {
				activity.finish();
				stack.remove(activity);
			}
		}
	}

	/**
	 * 结束指定的Activity
	 * 
	 * @param activity
	 */
	public void finishActivity(Activity activity) {
		if (activity != null) {
			if (stack != null)
				stack.remove(activity);
			activity.finish();
			activity.overridePendingTransition(R.anim.fin_anim,
					R.anim.fout_anim);
		}
	}

	/**
	 * 结束指定类名的Activity
	 * 
	 * @param cls
	 */
	public void finishActivity(Class<?> cls) {
		if (stack != null && stack.size() > Constant.NUMBER_0) {
			for (Activity a : stack) {
				if (a.getClass().equals(cls)) {
					a.finish();
					a.overridePendingTransition(R.anim.fin_anim,
							R.anim.fout_anim);
					stack.remove(a);
					break;
				}
			}
		}
	}

	/**
	 * 结束所有的Activity
	 */
	public void finishAllActivity() {
		if (stack != null && stack.size() > Constant.NUMBER_0) {
			for (Activity a : stack) {
				if (a != null)
					a.finish();
			}
			stack.clear();
		}
	}

	/**
	 * 结束App
	 * 
	 * @param context
	 */
	public void exitApp(Context context) {
		MobclickAgent.onKillProcess(context);
        System.exit(0);
		
	}

	/**
	 * 是否只有一个Activity 是返回true，否则返回false
	 */
	public boolean isFinalActivity() {
		if (stack != null && stack.size() == Constant.NUMBER_1) {
			return true;
		}
		return false;
	}
	
	public boolean isActivityExist(Class<?> cls) {
		if (stack != null && stack.size() > Constant.NUMBER_0) {
			for (Activity a : stack) {
				if (a.getClass().equals(cls)) {
					return true;
				}
			}
		}
		return false;
	}

}
